package targetToOffer.sixteenthDay;

/**
 * @author Godc
 * @description
 */
public class Add {
}
class AddSolution {
    public int add(int a, int b) {
        // 非进位和进位和，当b==0，表示进制位为0
        if(b==0) return a;
        return add(a^b,(a&b)<<1);
    }

    /**
     * 非递归写法
     * @param a
     * @param b
     * @return
     */
    public int add1(int a,int b){
        while(b!=0){
            // 进位和
            int c = (a&b)<<1;
            // a表示非进位和
            a^=b;
            // b=进位和
            b = c;
        }
        return a;
    }
}